package com.czy.moudle.pdm.service;


import com.czy.moudle.pdm.vo.Entity;

import java.util.List;

/**
 * 数据转换服务
 *
 * @author 陈致远
 * <p>
 *
 * 实现数据库表、字段、类型到java类、属性、类型的转换
 */
public interface DataTranceService {
    String SPLIT_STR = "_";

    String fieldCommentContent = "\t/**\n\t*<fieldComment>\n\t*/\n";
    String fieldContent = "\tprivate <fieldType> <fieldName>;\n";
    String fieldSetContent = "\tpublic void set<fieldName>(<fieldType> <fieldName>){\n\tthis.<fieldName> = <fieldName>;\n\t}\n\n";

    /**
     * 转换数据库表名或字段名为驼峰表示
     * 1.如果数据库表名或字段名包含下划线：则以下划线分隔为多个字符串，每个字符串首字符大写，其余小写，
     *   然后拼接除第一个外的其他字符串（T_USER --user 、I_USER_NAME userName）
     * 2.如果不包含下划线，则直接返回
     *
     * @param dbName  表名‘ 字段名
     *
     * @return
     */
    String column2FieldOfName(String dbName);

    /**
     * 数据库字段类型转换为java类型
     *
     * varchar --> String
     * datetime --> java.util.Date
     * bigint --> Integer
     *
     * @param columnType 数据库字段类型
     * @return java类型
     */
    String column2FieldOfType(String columnType);

    /**
     * 转换数据库表
     * 表名称  --->   类名称
     * 字段名称 --->   属性名称
     * 字段类型  --->  java类型
     * @param tableList
     */
    void tranceDBColumnList(List<Entity> tableList);
}
